package com.aust.lambda;

public class TestLambda6 {
    public static void main(String[] args) {
        /*MyCalculator add = new MyCalculator() {
            @Override
            public int calculate(int a, int b) {
                return a + b;
            }
        };*/

        /**
         * lambda表达式
         * 如果 Lambda 表达式的代码块中只有一行表达式，且需要返回结果，return 可以省略
         * 如果 Lambda 表达式中存在多行代码，就必须使用 {} 并且显式写 return。
         * 如果 Lambda 表达式没有返回值（即返回 void），就不能加 return。
         * 一旦使用了 {}，即使只有一行表达式，也必须加 return。
         */
        MyCalculator add = (a, b) -> a + b;


        /*MyCalculator sub = new MyCalculator() {
            @Override
            public int calculate(int a, int b) {
                return a - b;
            }
        };*/

        MyCalculator sub = (a, b) -> a - b;

        MyCalculator mul = new MyCalculator() {
            @Override
            public int calculate(int a, int b) {
                return a * b;
            }
        };

        MyCalculator div = new MyCalculator() {
            @Override
            public int calculate(int a, int b) {
                return a / b;
            }
        };

        System.out.println(add.calculate(1, 2));
        System.out.println(sub.calculate(1, 2));
        System.out.println(mul.calculate(1, 2));
        System.out.println(div.calculate(1, 2));
    }
}
